const arr = [10, 20, 30, 40]
// pop
// const popRes = arr.pop()
// console.log(arr, popRes) // [10, 20, 30] 3

// push
// const pushRes = arr.push(50, 60)
// console.log(arr, pushRes) // [ 10, 20, 30, 40, 50, 60 ] 6

// unshift
// const unshiftRes = arr.unshift(-10, -20)
// console.log(arr, unshiftRes) // [ -10, -20, 10, 20, 30, 40 ] 6

// shift
// const shiftRes = arr.shift()
// console.log(arr, shiftRes) // [ 20, 30, 40 ] 10

// 纯函数：1. 不改变源数组（没有副作用）； 2. 返回一个数组

// concat
// const arr1 = arr.concat([50, 60, 70])
// console.log(arr, arr1) // [ 10, 20, 30, 40 ] [10, 20, 30, 40, 50, 60, 70]

// map
// const arr2 = arr.map(val => val * 10)
// console.log(arr, arr2) // [ 10, 20, 30, 40 ] [ 100, 200, 300, 400 ]

// filter
// const arr3 = arr.filter(val => val > 25)
// console.log(arr, arr3) // [ 10, 20, 30, 40 ] [ 30, 40 ]

// slice 纯函数
// const arr4 = arr.slice()
// console.log(arr, arr4) // [ 10, 20, 30, 40 ] [ 10, 20, 30, 40 ]
// const arr4 = arr.slice(2, 4) // start, end
// console.log(arr, arr4) // [ 10, 20, 30, 40 ] [ 30, 40 ]
// const arr4 = arr.slice(1) // start
// console.log(arr, arr4) // [ 10, 20, 30, 40 ] [ 20, 30, 40 ]
// const arr4 = arr.slice(-2) // lastest start
// console.log(arr, arr4) // [ 10, 20, 30, 40 ] [ 30, 40 ]
// const arr4 = arr.slice(-3, -2) // lastest start, lastest end
// console.log(arr, arr4) // [ 10, 20, 30, 40 ] [ 20 ]

// splice 非纯函数
// const spliceRes = arr.splice(1, 2, 'a', 'b', 'c') // start, length, 
// console.log(arr, spliceRes) // [ 10, 'a', 'b', 'c', 40 ] [ 20, 30 ]
// const spliceRes = arr.splice(1, 2)
// console.log(arr, spliceRes) // [ 10, 40 ] [ 20, 30 ]
// const spliceRes = arr.splice(1, 0, 'a', 'b', 'c') // 只增加不剪切
// console.log(arr, spliceRes) // [ 10, 'a', 'b', 'c', 20, 30,  40 ] []

// const res = [10, 10, 10, 10].map(parseInt)
// 拆解，相当于：
// const res = [10, 10, 10, 10].map((item, index) => {
//   return parseInt(item, index)
// })
// parseInt(num, base = 10)  其中base = 0时，相当于base = 10,也就是相当于10进制转换
// console.log(res) // [ 10, NaN, 2, 3 ]
